#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2023/11/23 22:34
# @Author  : FuKai ZHANG
# @File    : run_Case.py
# @Description :测试用例运行入口
import os
from utils import config
import pytest
from utils.Other_tools.allure_report_data import AllureFileClean
from utils.Logging_tools.log_control import INFO
from utils.Notification_control.send_email import SendEmail


def run():
    # 从配置文件中获取项目名称

    INFO.logger.info(
        """
                         _    _         _      _____         _
          __ _ _ __ (_)  / \\  _   _| |_ __|_   _|__  ___| |_
         / _` | '_ \\| | / _ \\| | | | __/ _ \\| |/ _ \\/ __| __|
        | (_| | |_) | |/ ___ \\ |_| | || (_) | |  __/\\__ \\ |_
         \\__,_| .__/|_/_/   \\_\\__,_|\\__\\___/|_|\\___||___/\\__|
              |_|
              开始执行{}项目...
            """.format(config.project_name)
    )

    pytest.main(['-s', '-W', 'ignore:Module already imported:pytest.PytestWarning',
                 '--alluredir', './report/tmp', "--clean-alluredir"])

    """
               --reruns: 失败重跑次数
               --count: 重复执行次数
               -v: 显示错误位置以及错误的详细信息
               -s: 等价于 pytest --capture=no 可以捕获print函数的输出
               -q: 简化输出信息
               -m: 运行指定标签的测试用例
               -x: 一旦错误，则停止运行
               --maxfail: 设置最大失败次数，当超出这个阈值时，则不会在执行测试用例
                "--reruns=3", "--reruns-delay=2"
               """

    os.system(r"allure generate ./report/tmp -o ./report/html --clean")
    # 从allure报告中获取测试用例的执行情况
    allure_data = AllureFileClean().get_case_count()
    # 发送邮件通知
    SendEmail(allure_data).send_main()


if __name__ == '__main__':
    run()
